/* type:Point|LineString|Circle|Polygon */
/* Square|Box(矩形) */
function createDraw({ type = "Point", source,
callback }) {
  let maxPoints = null;
  let geometryFunction = null;
  if (type == "Square") {
    type = "Circle";
    geometryFunction = ol.interaction.Draw.createRegularPolygon(4);
  } else if (type == "Box") {
    maxPoints = 2;
    geometryFunction = function (coordinates, geometry) {
      if (!geometry) {
        //多边形
        geometry = new ol.geom.Polygon(null);
      }
      var start = coordinates[0];
      var end = coordinates[1];
      geometry.setCoordinates([
        [start, [start[0], end[1]], end, [end[0], start[1]], start],
      ]);
      return geometry;
    };
    type = "LineString";
  }
  let draw = new ol.interaction.Draw({
    type,
    source,
    geometryFunction,
    maxPoints,
  });
  if(callback){
    draw.on("drawend",callback)
  }
  return draw;
}
export { createDraw };

